package net.xconcepts.stockdata.model.analysis;

import java.util.Map;

import net.xconcepts.stockdata.model.analysis.indicator.Indicator;
import net.xconcepts.stockdata.model.analysis.symbol.Symbol;
import net.xconcepts.stockdata.model.tick.SymbolTick;

public abstract class Rule<T> {
	
	private final Indicator<T, ?> indicator;

	public Rule(Indicator<T, ?> indicator) {
		super();
		this.indicator = indicator;
	}

	public Indicator<T, ?> getIndicator() {
		return indicator;
	}
	
	/** returns whether the tick passes the rule */
	public abstract Map<Symbol, Boolean> processTicks(Map<Symbol, SymbolTick> ticks);
}
